package cn.com.blueInfo.bpm.number.request;

import cn.com.blueInfo.bpm.common.request.BaseDTO;
import cn.com.blueInfo.bpm.common.request.BaseQueryDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * 编号规则日志表 接收参数机校验
 * @author suxch
 * @since 2025-08-24 01:39:05
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "编号规则日志 接收参数及校验")
public class NumberLogDTO extends BaseDTO {

    /** 规则主表ID */
    @NotNull(message = "规则主表ID 不能为空")
    @Schema(description = "规则主表ID")
    private Long ruleId;
    /** 生成的编号 */
    @NotBlank(message = "生成的编号 不能为空")
    @Schema(description = "生成的编号")
    private String generatedNum;
    /** 业务类型（与规则表biz_type一致） */
    @Schema(description = "业务类型（与规则表biz_type一致）")
    private String bizType;
    /** 业务ID */
    @Schema(description = "业务ID")
    private Long bizId;
    /** 业务表表名 */
    @Schema(description = "业务表表名")
    private String bizTableName;
    /** 编号生成时间 */
    @NotNull(message = "编号生成时间 不能为空")
    @Schema(description = "编号生成时间")
    private LocalDateTime generateTime;
    /** 操作用户ID */
    @NotNull(message = "操作用户ID 不能为空")
    @Schema(description = "操作用户ID")
    private Long operatorId;

    /**
     * 编号规则日志 接收分页查询参数
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "编号规则日志 接收分页查询参数")
    public static class QueryDTO extends BaseQueryDTO {

        /** 规则主表ID */
        @Schema(description = "规则主表ID")
        private Long ruleId;
        /** 生成的编号 */
        @Schema(description = "生成的编号")
        private String generatedNum;
        /** 业务类型（与规则表biz_type一致） */
        @Schema(description = "业务类型（与规则表biz_type一致）")
        private String bizType;
        /** 业务ID */
        @Schema(description = "业务ID")
        private Long bizId;
        /** 业务表表名 */
        @Schema(description = "业务表表名")
        private String bizTableName;
        /** 编号生成时间 */
        @Schema(description = "编号生成时间")
        private LocalDateTime generateTime;
        /** 操作用户ID */
        @Schema(description = "操作用户ID")
        private Long operatorId;

    }

    /**
     * 编号规则日志 接收部分更新参数及校验
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "编号规则日志 接收部分更新参数及校验")
    public static class UpdatePartialDTO extends BaseDTO {

        /** 业务类型（与规则表biz_type一致） */
        @Schema(description = "业务类型（与规则表biz_type一致）")
        private String bizType;
        /** 业务ID */
        @Schema(description = "业务ID")
        private Long bizId;
        /** 业务表表名 */
        @Schema(description = "业务表表名")
        private String bizTableName;

    }

}